A digital-to-analog converter (DAC) is monotonic if the analog output always increases as the value of the digital input code to the DAC increases, and the analog output always decreases as the value of the digital input code to the DAC decreases. Stated another way, a monotonic DAC has an output that changes in the same direction for each increase of the input code. The quality of monotonicy is important in a DAC, especially if the DAC is used in a control loop. This is because when a non-monotonic DAC is used in a control loop, the loop can get stuck (e.g., at a local minimum), which can cause the DAC to toggle forever between a number of input codes.
Two important DAC parameters include Integrated Non-Linearity (INL) and Differential Non-Linearity (DNL), which are defined below.
For a DAC, INL (often called ‘relative accuracy’) is the deviation of an actual DAC transfer function from a straight line. After nullifying offset and gain errors, depending on implementation, the straight line can either be an ideal line, a best-fit straight line or a line drawn between the end points of the transfer function.
For a DAC, Differential Non-Linearity (DNL) is the difference between the ideal and the measured output responses for successive DAC codes. An ideal DAC response would have analog output values exactly one code (i.e., 1 LSB) apart, in which case DNL=0. To ensure that a DAC is monotonic, the DAC must have a negative DNL of less than 1 LSB. Stated another way, a DAC is guaranteed monotonic if the DNL is always greater than −1.
A well known technique for improving the linearity of a DAC is to determine the closest output voltage for a given input code by characterization of the DAC, and storing a correction code in look-up-table (LUT). This technique essentially takes an N bit DAC and remaps the input codes to obtain a trimmed N bit DAC with improved linearity. A challenge for this type of technique is that the LUT can be very large for the general case for any realistic values of N. Additionally, INL optimization can result in DNL values that are less than −1.0, resulting in a non-monotonic DAC, which as mentioned above, is undesirable when used in control loops.